home *** CD-ROM | disk | FTP | other *** search
/ USA Bestseller / USA BESTSELLER Vol 1-95 (Hepp-Computer)(1995).iso / e214 / ideboost.txt < prev    next >
Text File  |  1994-10-17  |  22KB  |  421 lines

  1.  
  2. SHAREWARE VERSION IDE BOOSTER
  3.  
  4. IDE Booster will shut down after 10,000 reads/writes.  This should give
  5. the average user about 8 hours of testing time to evaluate if IDE Booster
  6. is effective.  The counter is reset after rebooting the machine allowing
  7. for another 10,000 reads/writes to the disk.  The registered version of
  8. IDE Booster allows for unlimited reads/writes.
  9.  
  10.  
  11. The block device driver for AT/IDE interface hard disk drives that
  12. enables MULTIPLE SECTOR Block Transfer Mode.
  13.  
  14. IDE Booster is a block device driver that is designed exclusively for
  15. AT/IDE Hard Disk Drives. Many newer IDE drives have the built in
  16. capability to significantly increase their Data Transfer Rates by
  17. activating the MULTIPLE SECTOR Block Transfer Mode. In a typical
  18. scenario, the transfer rate can be increased by up to 45% over the
  19. rate offered by the motherboard bios. Some of the newest motherboards
  20. and high-end Host Adapters are beginning to offer this MULTIPLE Mode,
  21. but this great feature of our new IDE drives has essentially remained
  22. untapped.... until now, thanks to IDE Booster!
  23.  
  24. ┌────────────────────────────────────────────────────────────────────┐
  25. │▒▒▒ Command Line Switches ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  26. └────────────────────────────────────────────────────────────────────┘
  27.  
  28. No Command Line Switches - Driver will NOT load since it requires the
  29.                            command line switches for instruction.
  30.  
  31. B(?)xx - Block Size of xx for Unit ?. Where (?) is replaced by either
  32.          0 or 1 and xx is replaced by a value (typically an even
  33.          number) indicating the number of Sectors Per Block (SPB).
  34.          The SPB value cannot exceed the maximum number of sectors per
  35.          interrupt defined in the drive's own microcode.
  36.  
  37. RM(?) - Activate READ MULTIPLE for unit ?= 0 or 1.
  38.  
  39. WM(?) - Activate WRITE MULTIPLE for unit ?= 0 or 1.
  40.  
  41. P - Pause the progress of the config.sys after loading IDE Booster.  Press
  42.     C to continue.  This is handy when confirming the status of the
  43.     driver.
  44.  
  45. Example:
  46.  
  47. device=IDEBOOST.EXE B016 RM0 WM0 B132 RM1 P
  48.  
  49.          means: block size of 16 for unit 0 with READ and WRITE
  50.                 MULTIPLE, block size of 32 for unit 1 with READ
  51.                 MULTIPLE only, with a "Press C to Continue" pause
  52.                 after loading.
  53.  
  54. ┌────────────────────────────────────────────────────────────────────┐
  55. │▒▒▒ Background ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  56. └────────────────────────────────────────────────────────────────────┘
  57.  
  58. MULTIPLE SECTOR Block Transfer Mode has its origins in the ESDI hard
  59. disk drive interface.  Just prior to the development of the AT/IDE
  60. interface, the ESDI controllers were about ready to institute this
  61. very interesting ability.  Similar to the IDE inquiry command, ESDI
  62. drives will report 512 bytes of information about themselves where
  63. word 47 is a yes/no variable about Multiple Sector capability.  If the
  64. byte is "yes" then the following bytes will tell how many maximum
  65. sectors per interrupt may be used.
  66.  
  67. The rapid pace of hard drive technology, however, has since made the
  68. ESDI interface obsolete.  This is lamentable from the standpoint that
  69. the interface has a sterling reputation for quality and the drives for
  70. ruggedness.  ESDI drives were typically large capacity units (of the
  71. time) that found homes in file servers and other environments that
  72. demanded critical performance from their drives.  Most network
  73. managers will speak highly of the interface.
  74.  
  75. Drive manufacturers soon found that the cost per megabyte could be
  76. drastically reduced by building the controllers directly onto the
  77. drive.  This concept holds true for the AT/IDE interface (as well as
  78. SCSI, but that's a whole different ball game).  This integrated
  79. controller also allowed the drive manufacturers to use Zone Bit
  80. Recording methods (variable sectors per track) and drive geometry
  81. translation schemes to exceed the DOS limitation of 1024 cylinders
  82. max.  By building RAM buffers into the drives we finally begin to
  83. reach the point in hard drive technology where MULTIPLE SECTOR Block
  84. Transfer Mode begins to be a reality.
  85.  
  86. A discussion about the microcode which manages the drive RAM buffer is
  87. worthwhile.  Just like the RAM memory in our systems, the RAM buffers
  88. on an AT/IDE drive should be thought of as a "memory pool". Today's
  89. modern drives have buffers that range from simple to sophisticated. The
  90. simplest buffer schemes employ basic Read Look Ahead techniques that
  91. operate on the assumption that the next data you will request will be
  92. contiguously after the data you just got.
  93.  
  94. These Look Ahead buffers generally are FIFO types (first in, first
  95. out) that either read a pre defined number of sectors, or read through
  96. to the end of the physical cylinder.  It is easy to imagine that the
  97. transfer rate and speed of the data delivery to the host system is
  98. greatly increased when it is dumped from RAM to RAM (nanoseconds)
  99. instead of physically picking it up off of the drive (milliseconds).
  100.  
  101. The early AT/IDE drives had buffers of only 2 to 8 KiloBytes.  In
  102. terms of sectors, that is 4 to 16 (2 512 byte sectors equal 1
  103. KiloByte). This is enough to Read Ahead the rest of a track of a 17
  104. sector per track drive (typical of the day).  Reading Ahead to the end
  105. of the cylinder requires a much larger amount of memory.  Also, basic
  106. competition amongst the drive manufacturers to be faster "than the
  107. other guy" has caused the buffer sizes to increase.  Other factors
  108. like spindle speeds, recording densities, and access times combine
  109. together to be part of the overall improvements that have increased
  110. drive performance.
  111.  
  112. When the RAM buffer reaches a certain point in size, either the Read
  113. Look Ahead must cross a physical cylinder boundary or something else
  114. more desirable; this moves us into Segmented Buffers.  From here we
  115. see Adaptive Segmented Buffers, and so on.  A typical modern drive may
  116. describe its buffer as Read Look Ahead Multi-Segmented Adaptive,
  117. combining all types.
  118.  
  119. Write caching is the current newcomer to drive buffer techniques.
  120. These are interesting in that the drive reports that a write has
  121. completed as soon as the data arrives in the buffer, thereby freeing
  122. up the interrupt hold on the CPU, allowing it to move on to more
  123. processing. Then the drive, under its own control, attends to laying
  124. down the data on the spinning magnetic media.  This happens very
  125. quickly and does not carry with it the same negative implications that
  126. some report about write caching software.
  127.  
  128. The balance between RAM allotted to write cache and read cache is
  129. usually preset to around 40/60 and may someday actually dynamically
  130. adjust to true system usage.  You can begin to see that these models
  131. employ sophisticated microcode and algorithms working with a memory
  132. pool which is subdivided into various areas.  The size of this total
  133. buffer memory is climbing continuously, with state-of-the-art models
  134. offering 1 megabyte of RAM. (Why do I get the feeling that this will
  135. be old news in a few months.... <grin>?)
  136.  
  137. So, what about MULTIPLE SECTOR Block Transfer?  Simple, really...
  138. whatever Block Size is set, is deducted from the memory pool.  For
  139. example, if a 32 sector block is set, then 16 KiloBytes of RAM are
  140. removed from the Read/Write caching on the drive.  While this sounds
  141. like a setback, an actual increase in the Data Transfer Rate results
  142. from the way this can interact with DOS.
  143.  
  144. ┌────────────────────────────────────────────────────────────────────┐
  145. │▒▒▒ Outline ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  146. └────────────────────────────────────────────────────────────────────┘
  147.  
  148. Fortunately for all of us, the convenience of personal computers is
  149. due, in large part, to the simplification of the User Interface.  We
  150. have the advantage today, over the early pioneers, of being able to
  151. simply sit down and create within our applications.  We "suspect" that
  152. low level hardware operations are taking place as we work, because the
  153. equipment tends to respond to our commands.   We see the hard drive
  154. activity light flicker when we open and close our files.  This is as
  155. it should be for the popular acceptance of personal computers in our
  156. society.  User Interfaces have become friendlier each day, and will
  157. continue to do so.  We can all look forward to the near future when
  158. systems interact with more than just our fingers.
  159.  
  160. In some respects, interface is synonymous with translator.  As we work
  161. within our high level applications, layers of translations are taking
  162. place to convert our commands into machine language.  We enjoy the
  163. benefit of not needing to know how these clever manipulations are done
  164. and can count ourselves lucky in the process.  A typical read
  165. translation sequence might be as follows:
  166.  
  167. 1.  Application Command Open File
  168.  
  169.      This level has its own layers of simplification, but roughly
  170.      boils down to the fact that as a programmer's source code is
  171.      prepared for use, a compiler translates the file handling
  172.      components into the standard DOS level software interrupts,
  173.      notably Interrupt 21.
  174.  
  175. source code:   assign DataFile the name mydata.dat
  176.                open (DataFile)
  177.                read (DataFile, DataWeNeed)  : Int 21, Fn 3Fh
  178.                                               so many sectors...
  179.                close (DataFile)
  180.                use (DataWeNeed)
  181.  
  182.      These DOS interrupts provide even the programmer with the ability
  183.      of being able to avoid low level interaction with the system and
  184.      allows an application to operate on many types of machines.  Once
  185.      an application issues a DOS file command, the programmer can
  186.      count on a trustworthy sequence of events and can just let it
  187.      happen while waiting for a confirmation of success from the
  188.      operating system. (Some say that a REAL programmer always begins
  189.      with COPY CON PROGRAM.EXE <groan>.)
  190.  
  191. 2.  DOS File Allocation Table (FAT)
  192.  
  193.      The resident portion of our operating system, that part which
  194.      always stays in memory, is triggered into action by the DOS read
  195.      file interrupt.  The first order of business is to determine if
  196.      the file already exists, and if it does... where?  The DOS file
  197.      directories are used to make this determination and give the
  198.      operating system a starting point.  DOS uses a method of ordering
  199.      our data into clusters, or groups of sectors, that begins with
  200.      zero and numbers on up to the end of a drive's partition. This
  201.      might be thought of as a kind of linear, two dimensional map and
  202.      is sometimes call logical block address.
  203.  
  204.      Since most files are larger than a single cluster, the location
  205.      of the next cluster after the start is required.  This location
  206.      of the next portion of the file is determined by inspecting the
  207.      File Allocation Table.  This table tells DOS the logical
  208.      whereabouts of the next data; which does not necessarily
  209.      contiguously follow the location of the last data. With DOS
  210.      reading the data into memory as it goes along, these steps are
  211.      repeated until the end of the file is reached.  The link from
  212.      location to location create a virtual chain of connections that
  213.      insure that data is not lost.
  214.  
  215. 3.  DOS Kernel Resident Block Device Driver
  216.  
  217.      To this point the data is logically ordered in the two
  218.      dimensional manner described above. Yet, we need to translate
  219.      this into a specifically located sector on the drive, itself.
  220.      Disk drives order their data by Cylinders, Heads and Sectors
  221.      which is a kind of spacial three dimensional coordinate.  The
  222.      transition from the logical linear location to the physical
  223.      spacial location is the job of DOS's own Resident Block Device
  224.      Driver (Block a.k.a Disk).  This requires a straight forward
  225.      calculation whose result depends on the individual geometry of
  226.      the drive being accessed; this geometry is stored in the Boot
  227.      Records and things called Bios Parameter Blocks and is read into
  228.      memory when the operating system loads.
  229.  
  230.      If an imaginary drive had 10 sectors per track, 10 heads, and 10
  231.      cylinders, the drive would have a total of 1000 sectors. If we
  232.      were to count up through the sectors, the Heads digit (10's)
  233.      would increment after the ninth sector and the Cylinders digit
  234.      (100's) would increment after the ninth head.  With this model,
  235.      it is easy to see the relationship between the logical and
  236.      physical locations.  For example, the 123rd logical sector might
  237.      physically be located at Cyl=1, Hd=2 and Sect=3.  Aside from the
  238.      fact that DOS doesn't recognize a zero in the sectors digit, this
  239.      is the oversimplified way things are.  Disk drives, however, come
  240.      in many different capacities and make calculating a physical
  241.      location more interesting.  A drive with 17 Sectors per track, 6
  242.      Heads and 820 Cylinders would find the 123rd sector at Cyl=1,
  243.      Hd=1 and Sect=3 (right?).
  244.  
  245. 4.  Interrupt 13 Call
  246.  
  247.      Fun and games aside, the DOS Block Device Driver then builds a
  248.      hardware interrupt command that says something like "unit 0, at
  249.      cylinder 1, head 1, sector 4... read it."  Things start to look
  250.      just like assembly language programming at this point:
  251.  
  252.      mov ah, 02h   ; read function
  253.      mov al, 1     ; number of sectors
  254.      mov ch, 1     ; cylinder number
  255.      mov cl, 4     ; sector number
  256.      mov dh, 1     ; head number
  257.      mov dl, 0     ; unit number
  258.      int 13        ; disk interrupt
  259.  
  260.      Believe it or not, the fact is we still are looking at a language
  261.      designed to provide a user friendly interface, really.  Many
  262.      programmers actually write their programs at this level because
  263.      the finished and compiled  code ends up being smaller and faster
  264.      than the code produced by higher level programming languages like
  265.      Basic, Pascal and C.
  266.  
  267. 5.  AT BIOS Port Address Command
  268.  
  269.      Interrupt 13 Function 02h is a program, too, in a way. Its
  270.      routines are provided on a chip we all have someplace in our
  271.      system, called a BIOS (Basic Input Output Services).  When we
  272.      power on the computer the contents of the BIOS are stored in
  273.      memory and everything we do flows through these routines.  All
  274.      the hardware components of the computer - video, disk, keyboard,
  275.      etc. - have complicated little routines which handle
  276.      communicating with the hardware device.
  277.  
  278.      Repetition is the name of the game at this level.  In the case of
  279.      our read a file example, every involved sector is seeked to
  280.      (sought?), read from and checked out for success, individually.
  281.      What is simplified for convenience as Int 13 Fn 02h ends up being
  282.      a near endless stream of machine language Port Address commands.
  283.      Hard disk drives have a specific port address at 1F0h for the
  284.      Primary port address and 170h for the Secondary port address.
  285.      While Int 13 serves both hard and floppy disk drives, the port
  286.      addresses for these two different types of drives are split apart
  287.      and managed by separate BIOS routines.
  288.  
  289. 6.  Enter IDE Booster
  290.  
  291.      We've finally reached the level where it is time to consider how
  292.      IDE Booster figures into the scheme of things.  First, it is
  293.      important to look at the challenge faced by the BIOS programmer.
  294.      The hard disk drive to be used in the computer system will be one
  295.      of many hundreds of types across several interfaces that range
  296.      from old to new, all needing to be supported by the one BIOS
  297.      routine.  Given this obligation, the routines that are written
  298.      are understandably generic with the same code that runs our older
  299.      MFM drive also running our new AT/IDE drive.  The need for
  300.      general compatibility creates a situation where the special
  301.      enhancements of the modern AT/IDE disk drive are left
  302.      unsupported.
  303.  
  304.      The phrase "Multiple Sectors Per Interrupt" correctly implies the
  305.      notion that normally we have only one sector per interrupt. This
  306.      is the case with the standard BIOS service and is the default
  307.      start up configuration of the drive.  The following diagram shows
  308.      that a large amount of time is spent in overhead checking the
  309.      interrupt after every sector read from the port:
  310.  
  311.      Interrupt Confirmation (overhead)
  312.      │
  313.     ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐   ┌i┐
  314.  s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s──┘ └s─
  315.  │
  316.  Sector Read
  317.  
  318.  
  319.      With Multiple Sector Block Transfer Mode enabled on the drive,
  320.      block size equals to 8, a flow of data like this results:
  321.  
  322.                                  Interrupt Confirmation (overhead)
  323.                                  │
  324.                                 ┌i┐                               ┌i┐
  325.  s───s───s───s───s───s───s───s──┘ └s───s───s───s───s───s───s───s──┘ └
  326.  │
  327.  Sector Read
  328.  
  329.      A new routine is required to pass this type of data flow back to
  330.      DOS; software of this type is called an Interrupt Service Routine
  331.      (ISR). IDE Booster is an ISR replacement for the native BIOS Int 13
  332.      read and/or write hard disk drive service routines.  IDE Booster
  333.      resides in memory, monitoring all Int 13 requests.  When a Read
  334.      and/or Write request comes along, it intercepts the command and
  335.      manages it directly, "hand carrying" it through to the
  336.      port addresses, and the drive.
  337.  
  338.      The turn around time on the delivery of the data is significantly
  339.      improved because much of the overhead from the interrupt
  340.      confirmations has been eliminated. This causes the Data Transfer
  341.      Rate to increase significantly.  IDE Booster is loaded as a device
  342.      driver through the Configure System CONFIG.SYS file.  Since
  343.      IDE Booster operates at such a low level, it remains compatible with
  344.      virtually all applications.  A few noteworthy exceptions do exist
  345.      and are noted in the App Notes section, below.
  346.  
  347. ┌────────────────────────────────────────────────────────────────────┐
  348. │▒▒▒ App Notes ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  349. └────────────────────────────────────────────────────────────────────┘
  350.  
  351. Some Application Notes:
  352.  
  353.  1.  We've seen a few programs which provide an interesting "public
  354.      safety" feature, namely that they block attempts to  write to
  355.      track 0 (i.e. cylinder 0, head 0).  The purpose is to provide a
  356.      layer of defense against boot sector viruses. Since this is such
  357.      a good idea, we decided to join in and provide the same
  358.      protection.  After all, our device driver is custom tailored to
  359.      reading and writing to the hard disk drive and this capability
  360.      only added a byte or two of additional code. IDE Booster provides
  361.      this general safety precaution because no legitimate applications
  362.      have any business, whatsoever, writing changes to sectors on this
  363.      track without your knowledge.
  364.  
  365.      Reading data on track 0 is allowed, however writing to track 0
  366.      will produce a write protect error.  If you need to modify data
  367.      on these "hidden" sectors, then you will need to REM out the
  368.      device=dqwik110.hdd statement in the config.sys, and reboot.
  369.  
  370.  2.  Drive compression software programs like DoubleSpace work
  371.      perfectly well with IDE Booster.
  372.  
  373.  
  374.  4.  Concerning Windows Swap Files: A Temporary swap file works
  375.      because the file is like any other typical file with FAT updates.
  376.      A Permanent swap file doesn't work because it is unlike any other
  377.      typical file.  Basically, a permanent swap file locks itself into
  378.      an area on the drive and never moves, and since it never moves,
  379.      DOS and FAT updates are no longer required. A permanent swap file
  380.      is read and written directly with Int13 and cannot handle
  381.      multiple sector block transfer mode.  Windows should refuse to
  382.      load if it sees an Int13 interrupt service routine like IDE Booster.
  383.  
  384.      We'd like to point out that the net gain in data transfer rate,
  385.      while in Windows, from using multiple sector block transfer mode
  386.      access to a temporary swap file far exceeds the gain of using
  387.      native Int13 access to a permanent swap file.
  388.  
  389.  5.  DOS version levels and OEM versions of DOS work because they all
  390.      follow the same standards accessing Int13.
  391.  
  392.  6.  When determining the value for Sectors Per Block (SPB) in the
  393.      registered version, it is worth noting that the rate of change in
  394.      the Data Transfer Rate tends to level out around 32 sector per
  395.      block. Even if your drive says it can handle a higher amount,
  396.      you'll probably find the increase is fairly small and not really
  397.      worth it considering the RAM requirement is removed from the
  398.      drive's buffer memory pool (i.e. read/write caching on the
  399.      drive).
  400.  
  401.  7.  The Sector Per Block value can be odd or even values, however
  402.      setting values to  2, 4, 8, 16, or 32 seem to make better sense
  403.      as they are more adapted to the math routines involved.
  404.  
  405.  8.  File defragmentation and optimization utilities will generally
  406.      work well with IDE Booster, however it is a good practice to
  407.      simplify one's system before running this type of utility by
  408.      disabling programs like drive caching software and IDE Booster.
  409.      Always make sure you have a current backup before optimizing a
  410.      hard disk drive.
  411.  
  412. ┌────────────────────────────────────────────────────────────────────┐
  413. │▒▒▒ Error Messages ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒│
  414. └────────────────────────────────────────────────────────────────────┘
  415.  
  416. The device driver may display a single of error message during the
  417. loading process of the CONFIG.SYS file.  It is "Error Loading
  418. IDE Booster" and results from the drive returning an aborted command when
  419. the set multiple command is issued.
  420.  
  421.